import {MockBackend} from "@angular/http/testing";
import {RequestMethod, Response, ResponseOptions} from "@angular/http";

var urlParse = require('url-parse')

// 文章列表数据
let data = {
    "total": 10,
    "items": [
        {
            "postId": "1",
            "title": "这玩意必须用严格的JSON格式，我也是醉了",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "true"
        },
        {
            "postId": "2",
            "title": "Key和Value都必须用双引号！",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "3",
            "title": "这玩意必须用严格的JSON格式，我也是醉了",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "4",
            "title": "Key和Value都必须用双引号！",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "5",
            "title": "这玩意必须用严格的JSON格式，我也是醉了",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "6",
            "title": "Key和Value都必须用双引号！",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "7",
            "title": "这玩意必须用严格的JSON格式，我也是醉了",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "8",
            "title": "Key和Value都必须用双引号！",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "9",
            "title": "t666",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "10",
            "title": "和上面的不一样啊。。。。",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        }
    ]
}

// 文章搜索数据
let searchData = {
    "total": 3,
    "items": [
        {
            "postId": "8",
            "title": "这是搜索出来的啊。。。。",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "true"
        },
        {
            "postId": "9",
            "title": "这是搜索出来的啊。。。。",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        },
        {
            "postId": "10",
            "title": "这是搜索出来的啊。。。。",
            "postTime": "2016-11-21 10:44",
            "userName": "大漠穷秋",
            "userId": "1",
            "readTimes": "10000",
            "commentTimes": "10000",
            "isfamous": "false"
        }
    ]
}

//文章内容数据
let post = {
    "id":1,
    "author":"大漠穷秋",
    "postTime":"2016-12-12 12:12:12",
    "readTimes":999999,
    "commentTimes":99999,
    "title":"Angular2 自定义组件。。。。。。滴滴答答滴滴答答滴滴答答的",
    "text":"<p>这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。</p><p>这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。这文章这么长。。。。</p>"
}

export function mockInit(mockBackend: MockBackend) {
    mockBackend.connections.subscribe(conn => {
        let request = conn.request

        switch (request.method) {
            case RequestMethod.Get:
                let fullUrl = 'http://localhost:4200' + request.url
                console.log('URL: ' + request.url + ', Method: Get')
                let url = urlParse(fullUrl, true)

                if (url.query.searchText !== undefined) {
                    // 文章列表搜索后的数据
                    let res = new Response(new ResponseOptions({
                        body: JSON.stringify(searchData)
                    }))
                    conn.mockRespond(res)
                } else if (url.query.page !== undefined) {
                    // 文章列表正常列表数据
                    let res = new Response(new ResponseOptions({
                        body: JSON.stringify(data)
                    }))
                    conn.mockRespond(res)
                } else if (url.pathname === '/post') {
                    // 文章详情
                    let res = new Response(new ResponseOptions({
                        body: JSON.stringify(post)
                    }))
                    conn.mockRespond(res)
                }
                break;

            default:
                console.log('未处理的URL: ' + request.url)
                let res = new Response(new ResponseOptions({
                    status: 404
                }))
                conn.mockRespond(res)

        }
    })
}
